﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace B.S.DataBase.Production.Domain
{
    /// <summary>
    /// 物料登记明细
    /// </summary>
    public class MaterialRegistrationDetailModel
    {
        [Key]
        public int Id { get; set; }
        /// <summary>
        /// 物料主键id
        /// </summary>
        public int MaterialRegistrationFormId { get; set; }
        /// <summary>
        /// 序号（自动生成）
        /// </summary>
        public int Sequence { get; init; }

        /// <summary>
        /// 物料名称（必填）
        /// </summary>
        public string MaterialName { get; set; }

        /// <summary>
        /// 物料编号（可选）
        /// </summary>
        public string MaterialNumber { get; set; }

        /// <summary>
        /// 规格型号（物料规格）
        /// </summary>
        public string MaterialSpecification { get; set; }

        /// <summary>
        /// 单位（默认"个"）
        /// </summary>
        public string Unit { get; set; } 

        /// <summary>
        /// 比例（小数格式，如0.25表示25%）
        /// </summary>
        public decimal Ratio { get; set; }

        /// <summary>
        /// 所需数量（自动计算：父件数量×比例）
        /// </summary>
        public int RequiredQuantity { get; init; }

        /// <summary>
        /// 本次登记数量（必填，需≤可用数量）
        /// </summary>
        public int CurrentRegistrationQuantity { get; set; }

        /// <summary>
        /// 可用数量（自动显示库存）
        /// </summary>
        public int AvailableQuantity { get; init; }

        /// <summary>
        /// 已登记数量（历史累计值）
        /// </summary>
        public int RegisteredQuantity { get; init; }

        /// <summary>
        /// 备注（可选）
        /// </summary>
        public string Remarks { get; set; }

        /// <summary>
        /// 现有库存（实时库存量）
        /// </summary>
        public int ExistingInventory { get; init; }

        /// <summary>
        /// 本次登记数量合计（自动计算）
        /// </summary>
        public int TotalRegistrationQuantity { get; set; }
    }
}
